import encryption from "./encryption";
/*
 * ------------------------------------------------------------------
 * 封装localStorage操作 模块
 * ------------------------------------------------------------------
 * @关于我：
 * QQ:2815473064
 * wechat:13531609457
 * ------------------------------------------------------------------
 */

/**
 *  删除localStorage信息
 *  @returns {undefined}
 * **/
export const remove = function (key) {
  localStorage.removeItem(key);
};
/**
 *  存储localStorage信息
 *  @param {Object} options 存储配置信息
 *  @param {Boolean} options.encrypt 是否将内容加密后再存储
 *  @param {String} options.key sessionStorage存储的KEY
 *  @param {String} options.value sessionStorage存储的Value
 *  @returns {undefined}
 * **/
export const save = function ({
  encrypt = true, // 加密方式
  key = "", // 存储KEY
  value = "", // 存储内容
  expire = null, // 过期时间 单位:毫秒
}) {
  let saveValue = "";
  if (!key || !value) {
    return;
  }
  if (encrypt) {
    saveValue = encryption.encrypt(value);
  } else {
    saveValue = value;
  }
  localStorage.setItem(
    key,
    JSON.stringify({
      value: saveValue, // 存储的内容
      expire_time: expire * 1000 || null, // 过期时间
      save_time: Date.now(), // 保存时间
      encrypt, // 内容是否经过加密
    })
  );
};
/**
 *  获取localStorage信息
 *  @param {String} key 存储的Key
 *  @returns {String} 获取到的信息
 * **/
export const get = (key) => {
  if (!key) {
    return null;
  } else {
    let getdata = localStorage.getItem(key);
    if (getdata) {
      let parse = JSON.parse(getdata);
      if (parse.expire_time) {
        if (parse.expire_time > Date.now()) {
          if (parse.encrypt) {
            return encryption.decrypt(parse.value);
          } else {
            return null
          }
        }
      } else {
        if (parse.encrypt) {
          return encryption.decrypt(parse.value);
        } else {
          return parse.value;
        }
      }
    }
  }
};

export default {
  save,
  get,
  remove,
};
